Skip to main content

GopherLua:Go 中 Lua 的 VM 和编译器。

GopherLua:Go 中 Lua 的 VM 和编译器。 在 https://gitter.im/yuin/gopher-lua 加入聊天

GopherLua 是一个用 Go 编写的 Lua5.1 虚拟机和编译器。GopherLua 与 Lua 有着相同的目标:成为一种具有可扩展语义的脚本语言。它提供了 Go API,允许您轻松地将脚本语言嵌入到 Go 主机程序中。

内容

设计原则 性能怎么样? 安装 用法 Lua 和 GopherLua 的区别 独立翻译 如何贡献 GopherLua 的库 捐款 执照 作者 设计原则 是一种具有可扩展语义的脚本语言。 用户友好的 Go API 像原始 Lua 实现中使用的那样的基于堆栈的 API 将导致 GopherLua 的性能改进(它将减少内存分配和具体类型 <-> 接口转换)。GopherLua API不是基于堆栈的 API。GopherLua 优先考虑用户友好性而不是性能。 性能怎么样? 我认为 GopherLua 不算快但也不算太慢。

GopherLua 在微基准测试中的性能几乎与 Python3 相当(或稍好一些)。

wiki 页面上有一些基准测试。

安装 去 github.com/yuin/gopher-lua GopherLua 支持 >= Go1.9。

用法 GopherLua API 的执行方式与 Lua 大致相同,但堆栈仅用于传递参数和接收返回值。

GopherLua 支持通道操作。参见“Goroutines”部分。

导入一个包。

import (
"github.com/yuin/gopher-lua"
)

在 VM 中运行脚本。

L := lua.NewState()
defer L.Close()
if err := L.DoString(`print("hello")`); err != nil {
panic(err)
}
L := lua.NewState()
defer L.Close()
if err := L.DoFile("hello.lua"); err != nil {
panic(err)
}